/**-----------------------------------------------------------------
 ** @file fss.common.CommandInterface.java
 **
 ** @brief The interface defining a command for the RMI Registry or
 **        file server.
 **
 ** @author Meagan Griffin, Hieu Nguyen
 ** @created Mar 12, 2011 at 4:24:50 PM
 **
 ** @version 1.0
 **-----------------------------------------------------------------
 */
package fss.common;

import java.util.List;

/**
 * interface CommandInterface
 *   Defines the interface for a file transfer command.
 * @param <T> A file implementation.
 */
public interface CommandInterface<T>
{
  /**
   * method setLogs(List<String> aStringList)
   *   Sets the current log for this file transfer command.
   * @param aStringList List<String> The log implementation for this
   *                                 command.
   */
  public void setLogs(List<String> aStringList);
  
  /**
   * method getLogs()
   *   Returns the current log for this file transfer command.
   * @return List<String> The log implementation for this command.
   */
  public List<String> getLogs();
  
  /**
   * method setErrors(List<String> aStringList)
   *   Sets the current error log for this file transfer command.
   * @param aStringList List<String> The error list for this command.
   */
  public void setErrors(List<String> aStringList);
  
  /**
   * method getErrors()
   *   Returns the current error log for this file transfer command.
   * @return List<String> The error list for this command.
   */
  public List<String> getErrors();
  
  /**
   * method execute()
   *   Executes this command on either the RMI Registry Server or 
   *   the File Server.
   * @return T The file implementation resultant from the command's execution.
   */
  public T execute();
} // end interface CommandInterface
